/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.tms.module.transportorder.entity;

import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 运输单实体类
 *
 * @author Blade
 * @since 2022-03-03
 */
@Data
@TableName("tm_transport_order")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "TransportOrder对象", description = "运输单")
public class TMTransportOrder extends TenantEntity {

	private static final long serialVersionUID = 1L;

	/**
	 * 主键
	 */
	@ApiModelProperty(value = "主键")
	private Long id;
	/**
	 * 运输单号
	 */
	@ApiModelProperty(value = "运输单号")
	@ExcelProperty(value = "运输单号")
	private String transportNo;
	/**
	 * 司机ID
	 */
	@ApiModelProperty(value = "司机ID")
	private Long driverId;
	/**
	 * 司机名称
	 */
	@ApiModelProperty(value = "司机名称")
	@ExcelProperty(value = "司机名称")
	private String driverName;
	/**
	 * 车牌号
	 */
	@ApiModelProperty(value = "车牌号")
	@ExcelProperty(value = "车牌号")
	private String carNo;
	/**
	 * 挂车号
	 */
	@ApiModelProperty(value = "挂车号")
	@ExcelProperty(value = "挂车号")
	private String bindCarNo;
	/**
	 * 运输状态
	 */
	@ApiModelProperty(value = "运输状态")
	@ExcelProperty(value = "运输状态")
	private String transportStatus;
	/**
	 * 承运商编码
	 */
	@ApiModelProperty(value = "承运商编码")
	@ExcelProperty(value = "承运商编码")
	private String carrierNo;
	/**
	 * 承运商名称
	 */
	@ApiModelProperty(value = "承运商名称")
	@ExcelProperty(value = "承运商名称")
	private String carrierName;
	/**
	 * 货运订单号
	 */
	@ApiModelProperty(value = "货运订单号 ")
	@ExcelProperty(value = "货运订单号")
	private String orderNo;
	/**
	 * 货运订单类型
	 */
	@ApiModelProperty(value = "货运订单类型")
	@ExcelProperty(value = "货运订单类型")
	private String orderType;
	/**
	 * 交货单号
	 */
	@ApiModelProperty(value = "交货单号")
	@ExcelProperty(value = "交货单号")
	private String deliverNo;
	/**
	 * 源位置
	 */
	@ApiModelProperty(value = "源位置")
	@ExcelProperty(value = "源位置")
	private String startLocationNo;
	/**
	 * 源位置名称
	 */
	@ApiModelProperty(value = "源位置名称")
	@ExcelProperty(value = "源位置名称")
	private String startLocationName;
	/**
	 * 原位置区域（省份）
	 */
	@ApiModelProperty(value = "原位置区域（省份）")
	@ExcelProperty(value = "原位置区域")
	private String startLocationArea;
	/**
	 * 源位置城市
	 */
	@ApiModelProperty(value = "源位置城市")
	@ExcelProperty(value = "源位置城市")
	private String startLocationCity;
	/**
	 * 源位置街道
	 */
	@ApiModelProperty(value = "源位置街道")
	@ExcelProperty(value = "源位置街道")
	private String startLocationStreet;
	/**
	 * 计划提货日期-开始
	 */
	@ApiModelProperty(value = "计划提货日期-开始")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ExcelProperty(value = "计划提货日期")
	private LocalDateTime planGetGoodsDateStart;
	/**
	 * 计划提货日期-结束
	 */
	@ApiModelProperty(value = "计划提货日期-结束")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ExcelProperty(value = "计划收货日期")
	private LocalDateTime planGetGoodsDateEnd;
	/**
	 * 备注
	 */
	@ApiModelProperty(value = "备注")
	@ExcelProperty(value = "备注")
	private String remark;
	/**
	 * 目标位置
	 */
	@ApiModelProperty(value = "目标位置")
	@ExcelProperty(value = "目标位置")
	private String targetLocationNo;
	/**
	 * 目标位置名称
	 */
	@ApiModelProperty(value = "目标位置名称")
	@ExcelProperty(value = "目标位置名称")
	private String targetLocationName;
	/**
	 * 承运商ID
	 */
	@ApiModelProperty(value = "承运商ID")
	private Long carrierId;
	/**
	 * 目标位置区域（省份）
	 */
	@ApiModelProperty(value = "目标位置区域（省份）")
	@ExcelProperty(value = "目标位置区域")
	private String targetLocationArea;
	/**
	 * 目标位置城市
	 */
	@ApiModelProperty(value = "目标位置城市")
	@ExcelProperty(value = "目标位置城市")
	private String targetLocationCity;
	/**
	 * 目标位置街道
	 */
	@ApiModelProperty(value = "目标位置街道")
	@ExcelProperty(value = "目标位置街道")
	private String targetLocationStreet;
	/**
	 * 罐箱号
	 */
	@ApiModelProperty(value = "罐箱号")
	@ExcelProperty(value = "罐箱号")
	private String containerNo;

	/**
	 * 拆分货运订单
	 */
	@ApiModelProperty(value = "拆分货运订单")
	@ExcelProperty(value = "拆分货运订单")
	private String orderNoNew;

	/**
	 * 拆分交货单
	 */
	@ApiModelProperty(value = "拆分交货单")
	@ExcelProperty(value = "拆分交货单")
	private String deliverNoNew;


	/**
	 * 押运员
	 */
	@ApiModelProperty(value = "押运员ID")
	private Long supercargoId;

	/**
	 * 押运员
	 */
	@ApiModelProperty(value = "押运员名称")
	@ExcelProperty(value = "押运员名称")
	private String supercargoName;
	/**
	 * 需求单id
	 */
	@ApiModelProperty(value = "需求单id")
	private Long demandId;
	/**
	 * 罐箱类型
	 */
	@ApiModelProperty(value = "罐箱类型")
	@ExcelProperty(value = "罐箱类型")
	private String tankType;
	/**
	 * 罐箱类型
	 */
	@ApiModelProperty(value = "异常类型")
	private BigDecimal abnormalSpelling;
	/**
	 * 客户名称
	 */
	@ApiModelProperty(value = "客户名称")
	@ExcelProperty(value = "客户名称")
	private String customerName;
	/**
	 * 国际贸易条款
	 */
	@ApiModelProperty(value = "国际贸易条款")
	@ExcelProperty(value = "国际贸易条款")
	private String tradeTerms;
	/**
	 * 国际贸易条款附加信息
	 */
	@ApiModelProperty(value = "国际贸易条款附加信息")
	@ExcelProperty(value = "国际贸易条款附加信息")
	private String tradeTermsItem;

	/**
	 * 提单号
	 */
	@ApiModelProperty(value = "提单号")
	@ExcelProperty(value = "提单号")
	private String billOfLadingNumber;

	/**
	 * 铅封号
	 */
	@ApiModelProperty(value = "铅封号")
	@ExcelProperty(value = "铅封号")
	private String leadSealNumber;

	@ApiModelProperty("订单号")
	@ExcelProperty(value = "订单号")
	private String orderNumber;

	@ApiModelProperty("作废原因")
	@ExcelProperty(value = "作废原因")
	private String reasonForVoiding;

    @ApiModelProperty("合同公司")
    @ExcelProperty(value = "合同公司")
    private String contractCompany;

    @ApiModelProperty("是否推送GPS标记")
    @ExcelProperty(value = "是否推送GPS标记")
    private String pushTag;

    @ApiModelProperty("预计到厂时间")
    @ExcelProperty(value = "预计到厂时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime expectedArrivalTimeAtTheFactory;
}
